/**
 ******************************************************************************
 * @file    USER/LED/led_bsp.c
 * @author  Forester
 * @version V1.1.0
 * @date    07-February-2024
 * @brief   霸天虎F407ZGT6 V2 LED 灯 板级驱动
 ******************************************************************************
 * @attention
 *
 *
 ******************************************************************************
 */

#include "bsp_led.h"
#include "stm32f4xx.h"                  // Device header
#include "stm32f4xx_rcc.h"
#include "stm32f4xx_gpio.h"

void LED_GPIO_Config(void)
{
  /* 1. 开时钟 AHB1 总线*/
	RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE);
	
  /* 2. 初始化 GPIO: 方向, 上下拉, 推挽开漏, 速度*/
  GPIO_InitTypeDef GPIO_InitStructure;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
	GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_8;
	GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
	GPIO_InitStructure.GPIO_Speed = GPIO_Medium_Speed;
	GPIO_Init(GPIOF, &GPIO_InitStructure);
	
	/* 3. 上拉 */
	GPIO_SetBits(GPIOF, GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_8);
}


void LED_ON(Color color)
{
	switch(color)
	{
		case RED:
			GPIO_ResetBits(GPIOF, GPIO_Pin_6);
			break;
		
		case GREEN:
			GPIO_ResetBits(GPIOF, GPIO_Pin_7);
			break;
		
		case BLUE:
			GPIO_ResetBits(GPIOF, GPIO_Pin_8);
			break;
	}
}


void LED_OFF(void)
{
	GPIO_SetBits(GPIOF, GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_8);
}
